package com.itheima.controller;

import org.springframework.web.bind.annotation.*;

/*
    TODO: springmvc基于AOP封住的异常统一处理器
 */
//注意,这个类需要被springmvc扫描到
//为Rest风格开发的控制器类做增强
//此注解自带@ResponseBody注解与@ControllerAdvice注解，具备对应的功能
//@RestControllerAdvice
//@ControllerAdvice // 表示这是controller的通知(增强)
//@ResponseBody // 方法的返回值作为响应数据
public class ProjectExceptionAdvice {

    /*
        专门处理Exception类型异常的通知
        1. 此方法在controller层代码抛出异常之后
        2. 并且此异常类型为Exception,那么此方法就会运行
        3. 而且参数ex就是所发生的异常
        返回值: 其实就是响应结果
     */
    @ExceptionHandler(Exception.class)
    public Result doException(Exception ex){
        ex.printStackTrace();
        return new Result(666,null);
    }
   /* //专门处理空指针异常的方法
    @ExceptionHandler(NullPointerException.class)
    public Result doNullPointerException(NullPointerException ex){
        ex.printStackTrace();
        return new Result(666,null);
    }
    //专门处理算术异常的方法
    @ExceptionHandler(ArithmeticException.class)
    public Result doArithmeticException(ArithmeticException ex){
        ex.printStackTrace();
        return new Result(777,null);
    }

    //处理除了空指针和算术异常之外异常的方法
    @ExceptionHandler(Exception.class)
    public Result doException(Exception ex){
        ex.printStackTrace();
        return new Result(888,null);
    }*/
}
